$(function () {
    initData();
    $('#projectId').combobox({
        onChange: function (n, o) {
            setTimeout("getSubjectTree()", 100);
            initDataSubjectTree(); // 加载科目
        }
    });
    $('#selAssetsType').combobox({
        onChange: function (n, o) {
            if (!isNull(n)) {
                setTimeout("getSubjectTree()", 100);
            }
        }
    });
    $('#selAmount').combobox({
        onChange: function (n, o) {
            if (!isNull(n)) {
                setTimeout("getSubjectTree()", 100);
            }
        }
    });
    $('#adjustCode').combobox({
        onChange: function (n, o) {
            if (!isNull(n)) {
                getSubjectAdjustAuxilaryInfo(n);
            }
        }
    });
    treeSearch("ss", "treeContent") // 绑定树搜索功能
})

//加载菜单树信息
function getSubjectTree() {
    $.messager.progress({text: '正在加载中...',});
    $.ajax({
            type: "post",
            url: finance + "/subject/querySubjectTree",
            dataType: "json",
            data: {
                strAssetsType: $("#selAssetsType").combobox("getValue"),
                strAmount: $("#selAmount").combobox("getValue"),
                projectId: $("#projectId").combobox("getValue")
            },
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                if (isNull(data.data)) {
                    //$.messager.alert('系统提示', "没有科目信息，请先维护核算方案！", 'warning');
                }
                $('#treeContent').tree({
                    cascadeCheck: true,
                    checkbox: false,
                    lines: false,
                    data: data.data,
                    onClick: function (node) {
                        //$.messager.alert('系统提示', "点击！", 'error');
                    },
                    //双击事件
                    onDblClick: function (node) {
                        viewSubject();
                    },
                    onContextMenu: function (e, node) {
                        //显示上下文菜单:就是显示右键菜单
                        e.preventDefault();
                        $(this).tree('select', node.target);
                        $('#nav').menu('show', {
                            left: e.pageX,
                            top: e.pageY
                        });
                        $('#nav').menu({
                            onClick: function (item) { // 根据选择的id判断选中的是添加，修改，还是删除
                                if ("1" == item.id) { // 新增
                                    addSubject();
                                }
                                if ("2" == item.id) { // 修改
                                    editSubject();
                                }
                                if ("3" == item.id) { // 删除
                                    delSubject();
                                }
                            }
                        })
                    },
                    formatter: function (node) {
                        //显示父节点含有子节点个数
                        var s = node.text;
                        if (node.children) {
                            s += ' <span style=\'color:blue\'>(' + node.children.length + ')</span>';
                        }
                        return s;
                    }
                })
                setTimeout("treeSearch(\"ss\", \"treeContent\")", 100);
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

// 初始化加载下拉框的值
function initData() {
    $.ajax({
            type: "post",
            url: finance + "/subject/init",
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                var assetsType = data.data.assetsType;
                var listProject = data.data.listProject;
                var adjustCode = data.data.adjustCode;
                if (!isNull(assetsType)) {
                    var assetsType2 = data.data.assetsType2;
                    assetsType2.unshift({"showmsg": "==全部==", "value": ''});
                    $('#selAssetsType').combobox("loadData", assetsType2);
                    $("#assetsType").combobox("loadData", assetsType);
                }
                if (!isNull(listProject)) {
                    $('#projectId').combobox("loadData", listProject);
                    $('#projectId').combobox('selectedIndex', 0); //选中第一个
                }
                if (!isNull(adjustCode)) {
                    $('#adjustCode').combobox("loadData", adjustCode);
                }
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

// 加载上级科目下拉框的值
function initDataSubjectTree() {
    $.ajax({
            type: "post",
            url: finance + "/subject/querySubjectTree",
            data: {
                projectId: $("#projectId").combobox("getValue")
            },
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                var listSubject = data.data;
                if (!isNull(listSubject)) {
                    //在数组第一个追加
                    listSubject.unshift({"text": "==无上级==", "id": '0', "pId": "", "iconCls": "icon-bricks"});
                    $("#parentId").combotree("loadData", listSubject);
                }
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

/**
 * 点击树节点加载对应科目信息
 * @param id
 */
function getSubjectInfo(id) {
    $.messager.progress({text: '正在加载中...',});
    var subject;
    $.ajax({
            type: "post",
            async: false,
            url: finance + "/subject/querySubject",
            dataType: "json",
            data: {
                id: id
            },
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                subject = data.data;
            },
            error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    )
    return subject;
}

/**
 * 获取辅助项对应核算项目集合
 * @param id
 */
function getSubjectAdjustAuxilaryInfo(adjustCode) {
    $.messager.progress({text: '正在加载中...',});
    $.ajax({
            type: "post",
            url: finance + "/subjectAdjustAuxilary/queryAdjustAuxilaryBySubjectId",
            dataType: "json",
            data: {
                projectId: $("#projectId").combobox("getValue"),
                subjectId: $("#subjectId").val(),
                adjustCode: adjustCode
            },
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                $("#auxilary").html("");
                $("#divAuxilary").hide();
                var subjectAuxilarys = data.data;
                var i = 1;
                var html = "";
                for (var key in subjectAuxilarys) {
                    var id = "auxilary" + i;
                    if (i % 2 != 0) {
                        html += "<tr>"
                    }
                    html += "<td  align=\"right\" width=\"15%\">" + subjectAuxilarys[key].auxilaryName + "：</td><td align=\"left\"><input id=" + id + " name=\"auxilary\" editable=\"true\" " +
                        " class=\"easyui-combobox\" data-options=\"required:false,prompt:'==请选择==',panelHeight:'auto',panelHeight:'150px'," +
                        " valueField: 'value', textField: 'showmsg'\"/></td> ";
                    if (i % 2 == 0) {
                        html += "</tr>"
                    }
                    i++;
                }
                if (!isNull(html)) {
                    $("#divAuxilary").show();
                    $(html).appendTo("#auxilary");
                    $.parser.parse("#auxilary");
                    var i = 1;
                    for (var key in subjectAuxilarys) {
                        var id = "auxilary" + i;
                        if (!isNull(subjectAuxilarys[key].dicAuxilaryCodeList)) {
                            var dicAuxilaryCodeList = subjectAuxilarys[key].dicAuxilaryCodeList;
                            dicAuxilaryCodeList.unshift({"showmsg": "==请选择==", "value": ''});
                        } else {
                            var dicAuxilaryCodeList = [];
                            dicAuxilaryCodeList.unshift({"showmsg": "==请选择==", "value": ''});
                        }
                        $('#' + id).combobox("loadData", dicAuxilaryCodeList);
                        $('#' + id).combobox("setValue", subjectAuxilarys[key].auxilaryValue);
                        i++;
                    }

                }
            },
            error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    )
}

/**
 *  查看方法
 */
function viewSubject() {
    $("#auxilary").html("");
    $("#divAuxilary").hide();
    $("#myform").form('clear');//添加之前清空表达信息
    $('#myform').form('disableValidation');//清除验证样式
    var node = $("#treeContent").tree('getSelected');
    $('#dlg').dialog({
        title: "查看科目信息",
        buttons: [{
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    var data = getSubjectInfo(node.id);
    $('#myform').form('load', data);//页面赋值
}


/**
 * 新增科目方法
 */
function addSubject() {
    $("#auxilary").html("");
    $("#divAuxilary").hide();
    $("#myform").form('clear');//添加之前清空表达信息
    $('#myform').form('enableValidation');//设置验证样式
    var node = $("#treeContent").tree('getSelected');
    $('#dlg').dialog({
        title: "新增科目信息",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveItemSubject(1);
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    var data = getSubjectInfo(node.id);
    $('#myform').form('load', data);//页面赋值
    $('#parentId').combotree('setValue', data.id);
}

/**
 * 修改科目方法
 */
function editSubject() {
    $("#auxilary").html("");
    $("#divAuxilary").hide();
    $("#myform").form('clear');//添加之前清空表达信息
    $('#myform').form('enableValidation');//设置验证样式
    var node = $("#treeContent").tree('getSelected');
    $('#dlg').dialog({
        title: "编辑科目信息",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveItemSubject(2);
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    var data = getSubjectInfo(node.id);
    // 赋值原来科目信息，如果科目没有改不用检查是不是重复了
    $("#codeFirst").val(data.code);
    $('#myform').form('load', data);//页面赋值
}

/**
 * 保存科目信息的方法
 */
function saveItemSubject(ftype) {
    //验证表单信息
    if (!$("#myform").form('validate')) { //验证表单信息
        return;
    }
    $.messager.confirm('系统提示', "确定保存科目信息吗？", function (parm) {
        if (!parm) {
            return;
        }
        var url = finance + "/subject/addSubject";
        if (2 == ftype) {
            url = finance + "/subject/editSubject";
        }
        var arr = [];
        $('#myform').form('submit', {
            url: url,
            onSubmit: function (param) {
                param.projectId = $("#projectId").combobox("getValue");
                $("input[name='auxilary']").each(function (i, item) {
                    arr.push(item.value);
                });
                param.subjectAuxilary = JSON.stringify(arr);
                $.messager.progress({text: '正在处理中...',});
            }, success: function (data) {
                $.messager.progress('close');
                try {
                    data = JSON.parse(data);
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    //关闭弹出窗口
                    $('#dlg').dialog('close');
                    $.messager.show({title: '系统提示', msg: data.message});
                    getSubjectTree();//刷新树
                    initData();
                    initDataSubjectTree();
                } catch (e) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        });
    });
}


// 删除科目息
function delSubject() {
    var node = $("#treeContent").tree('getSelected');
    $.messager.confirm('系统提示', '确定要删除【' + node.text + '】科目以及下级所有科目信息吗？', function (param) {
        if (!param) {
            return;
        }
        $.messager.progress({text: '正在处理中...',});
        $.ajax({
                type: "post",
                url: finance + "/subject/delSubject",
                dataType: "json",
                data: {
                    id: node.id,
                    projectId: $("#projectId").combobox("getValue")
                },
                success: function (data) {
                    $.messager.progress('close');
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    getSubjectTree();//刷新树
                    initData();
                    $.messager.show({title: '系统提示', msg: data.message});
                }
                ,
                error: function (data) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        );
    });
}


/**
 * 检查科目是不是已经存在
 * @lsetlist name
 */
$.extend($.fn.validatebox.defaults.rules, {
    checkCode: {
        validator: function (value, param) {
            //修改页面，没有修改也提示存在的问题
            var name = $("#" + param[0]).val();
            if (value.toUpperCase() == name.toUpperCase()) {
                return true;
            }
            return checkCode(value)
        },
        message: '{1}'
    }
});


/**
 * 检查表名是不是已经存在
 * @lsetlist name
 */
function checkCode(code) {
    var falg = true;
    $.ajax({
        url: finance + "/subject/checkCode",
        method: 'post',
        async: false,
        data: {
            "code": code,
            projectId: $("#projectId").combobox("getValue")
        },
        success: function (data) {
            if (successcode != data.code) {
                return errorHandle(data);
            }
            if (data.data == false) {
                falg = false;//标识已经存在
            }
        }, error: function (data) {
            $.messager.progress('close');
            $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
        }
    });
    return falg;
}


// 保存科目辅助项信息
function addSubjectSubjectAuxilary() {
    var node = $("#treeContent").tree('getSelected');
    $('#myformAuxilaryView').form('submit', {
        url: finance + "/subjectSubjectAuxilary/add",
        onSubmit: function (param) {
            param.projectId = $("#projectId").combobox("getValue");
            param.subjectId = node.id;
            $.messager.progress({text: '正在处理中...',});
        }, success: function (data) {
            $.messager.progress('close');
            try {
                data = JSON.parse(data);
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                //关闭弹出窗口
                $('#dlgAuxilaryView').dialog('close');
                $.messager.show({title: '系统提示', msg: data.message});
            } catch (e) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    });
}
